﻿/**
 * Copyright (C) 2011 original author and authors
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace NGuice.Inject
{
    /// <summary>
    /// 用于指定运行的场景环境
    /// </summary>
    public enum Stage
    {
        /// <summary>
        /// 运行于工具模式下（例如在IDE中）。我们需要绑定元数据单补是一个功能性的Injector。此时不需要
        /// 注入实例的成员，也不要加载单例。他尽可能执行更少以便于我们的工具运行良好。在此场景中创建
        /// 的Injector不用于合适的注入
        /// </summary>
        TOOL,

        /// <summary>
        /// 开发模式下，我们期望更快的启动以及错误检测
        /// </summary>
        DEVELOPMENT,

        /// <summary>
        /// 生产模式下我们期望尽可能捕获错误并性能优先
        /// </summary>
        PRODUCTION
    }
}
